package com.city.lambda.syntax3;

import com.city.lambda.interfaces.LambdaSingleReturnSingleParameter;

/**
 * Created with IntelliJ IDEA.
 * User: Cheng
 * Date: 2020/4/20
 * Time: 13:28
 * Description: No Description
 */
public class Syntax3 {
    /**
     * 类分public 和 私有的，方法分静态的和非静态的，静态方法需要用类来调用，而非静态需要用对象来调用，就是需要new
     *
     *
     * static方法就是没有this的方法。在static方法内部不能调用非静态方法，反过来是可以的。而且可以在没有创建任何对象的前提下，
     * 仅仅通过类本身来调用static方法。这实际上正是static方法的主要用途。(简而言之)方便在没有创建对象的情况下来进行调用（方法/变量）。
     */

    public static void main(String[] args) {
        //方法引用
        LambdaSingleReturnSingleParameter labda1=a->a*10;
        LambdaSingleReturnSingleParameter labda2=a->a*10;
        LambdaSingleReturnSingleParameter labda3=a->a*10;
        //重复引用，不方便维护
        LambdaSingleReturnSingleParameter labda4=a->cheng(a);

        //方法的隶属者::方法名（隶属者-如果静态方法的隶属者就是它的类，非静态就是它的类的对象）
        LambdaSingleReturnSingleParameter labda5= Syntax3::cheng;
    }
    public static int cheng(int a){
        //test();静态方法不能调用非静态方法
        return a*10;
    }
    public int test(){
        //非静态方法能调用静态方法，
        Syntax3.cheng(1);//外部类调用时可通过类。来调用静态方法，无需new为对象
        int cheng = cheng(1);
        return cheng;
    }
}
